package com.kurt.service;

import com.kurt.dto.SysDictDataDTO;
import com.kurt.dto.create.SysDictDataCreateRequest;
import com.kurt.dto.query.SysDictDataQueryRequest;
import com.kurt.dto.update.SysDictDataUpdateRequest;
import com.kurt.entity.SysDictData;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 数据字典数据服务接口
 */
public interface SysDictDataService extends BaseService<SysDictData, Long> {

    /**
     * 创建数据字典数据
     *
     * @param createRequest 创建请求
     * @return 字典数据信息
     */
    SysDictDataDTO createDictData(SysDictDataCreateRequest createRequest);

    /**
     * 更新数据字典数据
     *
     * @param updateRequest 更新请求
     * @return 字典数据信息
     */
    SysDictDataDTO updateDictData(SysDictDataUpdateRequest updateRequest);

    /**
     * 分页查询数据字典数据
     *
     * @param queryRequest 查询请求
     * @return 分页结果
     */
    Page<SysDictDataDTO> getDictDataPage(SysDictDataQueryRequest queryRequest);

    /**
     * 查询数据字典数据列表
     *
     * @param queryRequest 查询请求
     * @return 字典数据列表
     */
    List<SysDictDataDTO> getDictDataList(SysDictDataQueryRequest queryRequest);

    /**
     * 根据字典类型ID获取字典数据列表
     *
     * @param dictTypeId 字典类型ID
     * @return 字典数据列表
     */
    List<SysDictDataDTO> getDictDataByTypeId(Long dictTypeId);

    /**
     * 根据字典类型获取字典数据列表
     *
     * @param dictType 字典类型
     * @return 字典数据列表
     */
    List<SysDictDataDTO> getDictDataByType(String dictType);

    /**
     * 根据字典类型获取启用的字典数据列表
     *
     * @param dictType 字典类型
     * @return 字典数据列表
     */
    List<SysDictDataDTO> getEnabledDictDataByType(String dictType);

    /**
     * 批量删除字典数据
     *
     * @param ids 字典数据ID列表
     * @return 删除结果
     */
    boolean deleteDictDatas(List<Long> ids);

    /**
     * 根据字典类型ID删除字典数据
     *
     * @param dictTypeId 字典类型ID
     * @return 删除结果
     */
    boolean deleteDictDataByTypeId(Long dictTypeId);

}
